day10e (バックバッファ)
やっとバックバッファが出てきた
バックバッファはゲーム開発には欠かせない要素だから、いつ出てくるのだろうと首を長くして待っていた
結局今出てるのは
実際に見える画面(名称がよくわからんのでフロントバッファとしておく)
→名称は「フレームバッファ」らしい?
ウィンドウ更新時はフレームバッファと同様にこっちにも書き込む
バックバッファ
LayerManagerが持っている、ウィンドウ更新時にここに書き込み、フロントバッファにコピーする
シャドウバッファ
見えない
ウィンドウが持っている
ウィンドウ更新時はこっちにも書き込み、再描画(他レイヤーのウィンドウが更新された時)はここからコピーする
LayerManagerもFrameBuffer* screenを持っているけど、これはフレームバッファ(違いは後述)
フレームバッファだと思ってたけど、ウィンドウが持っているのは見えないのでシャドウバッファらしい
これらはすべてFrameBufferクラスだけど、フレームバッファ以外はメモリ上にバッファを持っているのに対し、フレームバッファは変更がそのまま反映される
FrameBuffer::Initialize()で、conf.frame_bufferがnullptrでないときはバッファを空(reize(0))にしている
frame_bufferがnullptrではないのはフレームバッファだけ
例えばLayerManager::SetWriterではフレームバッファが渡されて※ 初期化されてるけど、その後にわざわざframe_bufferにnullptrを代入してバックバッファをInitializeしてるよね
※main.cppで初期化してる screen.Initialize(config)で、このconfigはUEFIから渡されたもの
あーなるほどね 完全に理解したわ